/**
 * 
 */
package baduga.server;

/**
 * @author Janek
 *
 */
public class Player {
	
	/** Pseudonim gracza */
	private String nickname;
	
	/** Finanse gracza */
	private int funds = Game_Cfg.PLAYER_FUNDS_LOG;
	
	/** Statistic 0 - Win, 1 - Draw, 2 - Loss */
	private int[] stats = new int[] {0, 0, 0};
	
	/** Status gracza
	 * 0 - wolnyStrzelec
	 * 1 - Gracz
	 * 2 - Obserwator
	 * */
	private int statusPlayer = 0;
	
	/** Identyfikator stołu */
	private String tableID = "";
	
	
	Player(String nickname)
	{
		this.nickname = nickname;
	}
	
	

	

	/**
	 * Sprawdza czy gracz w danej chwili posiada określoną ilość środków
	 * @param paid
	 * @return
	 */
	public boolean checkFunds(final int  paid)
	{
		boolean opStatus;
		
		
		if(paid <= funds)
		{
			opStatus =  false;
		}
		else
		{
			opStatus =  true;
		}
		
		return opStatus;
	}
	
	
	//------------------ [setters] - #start -----------------
	
	
	
	/**
	 * Pamietaj o sprawdzeniu metodą checkfunds
	 * @param paid
	 * @return
	 */
	public void setFunds(final int paid)
	{
		funds += paid;
	}
	
	
	/**
	 * Aktualizuje pseudonim gracza
	 * @param newNickname
	 */
	public void setNickName(final String newNickname)
	{
		nickname = newNickname;
	}
	
	
	/**
	 * Aktualizuje statystyki gracza wg. typu 0, 1, 2
	 * 
	 * @param type
	 * @param change
	 */
	public boolean setStats(final int type)
	{
		boolean opStatus;
		
		if(type > -1 && type < 3)
		{
			this.stats[type] += 1;
			opStatus = true;
		}
		else
		{
			//TODO: Komuniakat błędu
			opStatus = false;
		}
		
		return opStatus;
	}
	
	
	/**
	 * Ustawia Identyfikator stołu przy którym siedzi gracz.
	 * 
	 * @param nTableID
	 */
	public void setTableId(String nTableID)
	{
		this.tableID = nTableID;
	}
	
	
	//------------------ [setters] - #end -----------------
	
	
	//------------------ [getters] - #start -----------------
	/**
	 * Zwraca kolekcje statystyk
	 * 
	 * @return
	 */
	public int[] getFullStats()
	{
		return this.stats;
	}
	
	/**
	 * zwraca Login gracza
	 * 
	 * @return
	 */
	public String getNickName()
	{
		return this.nickname;
	}
	
	/**
	 * Zwraca aktualny stan funduszy gracza
	 * 
	 * @return
	 */
	public int getFunds()
	{
		return this.funds;
	}
	
	/**
	 * Zwraca identyfikator stołu przy którym siedzi gracz.
	 * 
	 * @return
	 */
	public String getTableId()
	{
		return this.tableID;
	}
	
	
	//------------------ [getters] - #end -----------------
	
	
	
	

}
